package learn.up.java.algorithm;

/**
 *数据类型与二进制的转换
 * @author NANUTO
 * @date 2017年12月4日 下午10:42:56
 */
public class BinaryConvert {

	public static void main(String[] args) {
		byte[] int2Bytes = int2Bytes(8143);
		for (byte val : int2Bytes) {
			System.out.println(val);
		}
		
		System.out.println(bytes2Int(int2Bytes));
	}
	
	/**
	 * 把int 数据转换为字节数组，这里采用的是低端法：
	 *   即低位字节放在内存的低地址端，即该值的起始端，高位地址放在内存地址的高地址端
	 * @param val
	 * @return
	 */
	public static byte[] int2Bytes(int val) {
		byte[] arr = new byte[4];
		for (int i = 0; i < arr.length; i ++) {
			arr[i] = (byte) (val >> (i * 8) & 0xff);
		}
		return arr;
	}
	
	public static int bytes2Int(byte[] val) {
		int result = 0;
		for (int i = 0;i < val.length; i ++) {
			result += (val[i] & 0xff) << (i * 8);
		}
		return result;	
	}
	
	public static byte[] string2Bytes(String s) {
		return s.getBytes();
	}

}
